<?php
/**
 * Класс описывающий RSS-закачку. Закачкой называется элемент очереди на скачивание RSS потоков.  
 * Содержит данные самой закачки и манипуляции над ними.
 * 
 * @author Alexander Sibiryakov
 */
class RssDownload {
	private $last_dl_timestamp;
	private $rdl_object;
	private $rss_url;
	private $feed_oid;
	
	public function __construct(fobject $rss_dl, $url, $feed_oid) {
		$this->rdl_object = $rss_dl;
		$this->last_dl_timestamp = strtotime($rss_dl->data['last_try_ts']);
		$this->rss_url = $url;
		$this->feed_oid = $feed_oid;
	}
	
	/**
	 * Получить идшника фида, который нужно скачать
	 * @return int
	 */
	public function getFeedOid() {
		return $this->feed_oid;
	}
	
	/**
	 * Получить время последней попытки скачивания
	 * @return int
	 */
	public function getLastDLTimestamp() {
		return $this->last_dl_timestamp;
	}
	
	/**
	 * Получить URL закачки
	 * @return string
	 */
	public function getURL() {
		return $this->rss_url;
	}
	
	/**
	 * Обновить состояние закачки
	 * 
	 * @param boolean $is_success - удачна ли была закачка
	 * @param int $size_kb  - размер в килобайтах закачанного потока
	 */
	public function upState($is_success, $size_kb) {
		
		if ($is_success === true) {
			$this->rdl_object->data['is_succ_dl'] = 1;
		} else {
			$this->rdl_object->data['is_succ_dl'] = 0;
		}
		$this->rdl_object->data['size_kb'] = $size_kb;
		$this->rdl_object->data['is_fresh'] = 0; // подразумевается что после любого обновления состояния закачка уже не свежая
		$this->rdl_object->data['last_try_ts'] = RL_CyrDate::newNow()->format("%Y-%m-%d %H:%i:%s");
		
		$this->rdl_object->save();
		$this->rdl_object->updateSense("rssdownloads");
	}
	
	/**
	 * Успешно ли скачана закачка?
	 * @return boolean
	 */
	public function isSuccessGet() {
		if ($this->rdl_object->data['is_succ_dl'] == 1) return true;
		return false;
	} 
}
?>
